Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2014, 14:12
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Разбор json ответа
Здравствуйте.

При отправке ajax запроса на сервер, я формирую многомерный массив и отправляю следующий json ответ:

PHP
$my_array = array(
'response1' => array('name' => 'Ivan', 'lastname' => 'Ivanov'),
'response2' => array('name' => 'Petya', 'lastname' => 'Petrov'));

echo json_encode($my_array);
exit;

JavaScript
var rand = Math.floor(Math.random( ) * (9999999+1));
$.ajax({
type: 'POST',
dataType: 'json',
cache: false,
url: '/my_php.php',
data: '&rnd='+rand,
      success: function(data) {
            // как вытащить из data нужные мне имена и фамилии людей?
      }


как вытащить из data нужные мне имена и фамилии людей? Просто поочереди вытащить их на alert(name + lastname). Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2014, 14:24
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

var parsed_data = $.parseJSON(data);

Преобразует JSON-строку в объект. Дальше циклом.
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2014, 14:27
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Цитата:
var parsed_data = $.parseJSON(data);
Это вариант от jquery?
А если на чистом javascript, будет так я полагаю?:
var parsed_data = JSON.parse(data);
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2014, 14:30
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Аха. Но оно не будет работать во всяких старых ишаках, потому лично я бы использовал кроссбраузерный вариант, раз уж он все равно уже имеется.
Ответить с цитированием
  #5 (permalink)  
Старый 20.06.2014, 15:39
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Решение было очень простое.

var rand = Math.floor(Math.random( ) * (9999999+1));
$.ajax({
type: 'POST',
dataType: 'json',
cache: false,
url: '/my_php.php',
data: '&rnd='+rand,
	success: function(data) {
		for(var i = 0; i< data.length; i++) {
			for(var h in data[i]) {
				alert(data[i][h].name + " &nbsp;" + data[i][h].lastname);		
			}
		}
	}
});

Последний раз редактировалось 1lider, 20.06.2014 в 15:48.
Ответить с цитированием
  #6 (permalink)  
Старый 20.06.2014, 15:49
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Ну или так, да. Но тогда уж $.getJSON используй. Это встроенный метод jQuery, не плагин.

И еще - когда данные запрашиваются, принято использовать метод GET, а не POST.
Ответить с цитированием
  #7 (permalink)  
Старый 20.06.2014, 15:59
Аспирант
Отправить личное сообщение для 1lider Посмотреть профиль Найти все сообщения от 1lider
 
Регистрация: 12.04.2013
Сообщений: 86

Цитата:
И еще - когда данные запрашиваются, принято использовать метод GET, а не POST.
Да, но GET данные больно ограниченны по длинне своей. Если поставлю GET, то и смысл теряется. Я запрашиваю пользовательскую строку из БД, которая может и не уместиться в размер допустимой длинны GET запроса. Или я что-то упускаю?
Ответить с цитированием
  #8 (permalink)  
Старый 20.06.2014, 16:53
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

При get ограничены передаваемые на сервер данные, а не принимаемые.
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2014, 01:19
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,140

Сообщение от Erolast Посмотреть сообщение
Ну или так, да. Но тогда уж $.getJSON используй. Это встроенный метод jQuery, не плагин.

И еще - когда данные запрашиваются, принято использовать метод GET, а не POST.
GET кешируется! т.е. по стандарту http один и тот же GET запрос должен возвращать один и тот же результат.
POST не кешируется.
Ответить с цитированием
  #10 (permalink)  
Старый 22.06.2014, 10:26
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Чтобы избежать кеширование, правильней будет запретить кеширование, а не использовать тип запроса с другим назначением. Но тогда да, надо более низкоуровневый метод ajax использовать.

Последний раз редактировалось Erolast, 22.06.2014 в 10:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Яндекс карты. Обработка json ответа timugatu Javascript под браузер 6 13.12.2013 20:03
разбор данных Json Гугл-мен jQuery 6 22.02.2013 15:03
Разбор ответа в формате Json yv73 Общие вопросы Javascript 3 09.08.2012 05:06
Неправильный разбор JSON Vulkan AJAX и COMET 2 24.01.2011 12:39
Разбор ответа в формате Json Rush Общие вопросы Javascript 11 29.01.2010 16:57